/*
 * -------------------------------------------------------------------------------
 * @FilePath     : app_iic.h
 * @Description  : application
 * Copyright (c) 2023 by NanoIC, All Rights Reserved. 
 * @Date         : 2023-11-10 14:48:53
 * @LastEditTime : 2023-11-10 16:26:33
 * @Author       : LvH
 * -------------------------------------------------------------------------------
 */
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __APP_IIC_H__
#define __APP_IIC_H__

/* Includes ------------------------------------------------------------------*/
#include "common.h"
#include "app_cfg.h"
#include "iic.h"
#include "pin.h"

#define IIC_PIN_SDA                 PA113
#define IIC_PING_SCL                PA112

//触摸板使用轮询读INT脚电平方式，不使用中断
// #define PINMASK_TP_IIC_INT          12
// #define TP_INT_GROUP                EXI_GRP12

/**
 * @brief : IIC上电初始化函数 
 *          PA1.12 IIC SCL
 *          PA1.13 IIC SDA
 */
void app_iic_init(void);
void app_iic_io_sleep_set(void);
/**
 * @brief : IIC工作时IO设置
 *          PA1.12 IIC SCL : 开漏输出
 *          PA1.13 IIC SDA : 开漏输出
 */
void app_iic_io_init(void);

void app_iic_reset(void);

/// @brief iic 写入数据
/// @param iicAddr 设备地址
/// @param pData 写入的数据指针
/// @param Size 写入长度
/// @return errcode
csi_error_t app_iic_write(uint16_t iicAddr,uint8_t *pData,uint16_t Size);

/// @brief 读取数据
/// @param iicAddr 设备地址
/// @param pData 读取数据指针
/// @param Size 读取长度
/// @return 
csi_error_t app_iic_read(uint16_t iicAddr,uint8_t *pData,uint16_t Size);

/// @brief iic 写入数据（寄存器模式）
/// @param iicAddr 设备地址
/// @param pWData 要写的寄存器地址
/// @param wSize 要写的寄存器地址大小
/// @param pRData 写取的数据指针
/// @param rSize 写长度
/// @return 
csi_error_t app_iic_write_register(uint16_t iicAddr,uint32_t regAddr,uint8_t addrSize,uint8_t *pWData,uint16_t wSize);

/// @brief iic 读数据（寄存器模式）
/// @param iicAddr 设备地址
/// @param pWData 要读的寄存器地址
/// @param wSize 要读的寄存器地址大小
/// @param pRData 读取的数据指针
/// @param rSize 读取长度
/// @return errcode
csi_error_t app_iic_read_register(uint16_t iicAddr,uint32_t regAddr,uint8_t addrSize,uint8_t *pRData,uint16_t rSize);
csi_error_t app_iic_read_register_buff(uint16_t iicAddr,uint8_t *regAddr,uint8_t addrSize,uint8_t *pRData,uint16_t rSize);
/**
 * @brief :通过IIC总线从设备中读取数据
 * 
 * @param iicAddr: IIC设备地址
 * @param pWData: 要写入的数据指针
 * @param wSize: 要写入的数据长度，不能大于8
 * @param pRData: 要读取的数据
 * @param rSize: 要读取的数据长度
 * 
 * @return 错误代码
 */
uint32_t app_iic_read_buf_register(uint16_t iicAddr,uint8_t *pWData,uint8_t wSize,uint8_t *pRData,uint16_t rSize);

#endif



